1
Từ Các Câu Hỏi Đơn Lẻ Đến Các Dòng Chạy: Tổng Quan Về Việc Điều Khiển LangChain
AI010Lesson 6
00:00

Từ Các Câu Hỏi Đơn Lẻ Đến Các Dòng Chạy

Sự Phát Triển Trong Tương Tác Với Mô Hình Ngôn Ngữ Lớn

Trong các bài học trước, chúng ta tập trung vào các tương tác đơn lẻ dựa trên một câu hỏi. Tuy nhiên, các ứng dụng thực tế đòi hỏi nhiều hơn chỉ là một câu hỏi và câu trả lời duy nhất. Để xây dựng các hệ thống trí tuệ nhân tạo có thể mở rộng, chúng ta phải chuyển sang việc điều khiển. Điều này bao gồm việc kết nối nhiều cuộc gọi mô hình ngôn ngữ lại với nhau, nhánh hóa logic dựa trên đầu vào của người dùng, và cho phép mô hình tương tác với dữ liệu bên ngoài.

Các Khối Xây Dựng Của Việc Điều Khiển

  • LLMChain:Đơn vị cơ bản. Nó kết hợp một mẫu câu hỏi (Prompt Template) với một mô hình ngôn ngữ.
  • Các Chuỗi Theo Thứ Tự:Chúng cho phép bạn tạo ra một quy trình nhiều bước, trong đó đầu ra của một bước trở thành đầu vào cho bước tiếp theo.
  • Các Chuỗi Điều Hướng:Chúng hoạt động như những 'bộ điều tiết giao thông', sử dụng một mô hình ngôn ngữ để quyết định chuỗi con chuyên biệt nào nên xử lý một yêu cầu cụ thể (ví dụ: gửi một câu hỏi toán học đến 'Chuỗi Toán' và một câu hỏi lịch sử đến 'Chuỗi Lịch Sử').

Nguyên tắc Chính: Luật Chuỗi

Các chuỗi cho phép nhiều thành phần—mô hình, câu hỏi, bộ nhớ—được kết hợp thành một ứng dụng nhất quán duy nhất. Sự phân mảnh này đảm bảo rằng các nhiệm vụ phức tạp có thể được chia nhỏ thành các bước dễ quản lý và dễ kiểm tra lỗi.

Mẹo Hay: Kiểm Tra Lỗi Trong Các Dòng Chạy
Khi các dòng chạy của bạn trở nên phức tạp, hãy sử dụng langchain.debug = True. Tính năng 'nhìn xuyên thấu' này cho phép bạn xem chính xác các câu hỏi đang được gửi đi và các kết quả thô nhận được ở mọi giai đoạn trong chuỗi.
sequential_chain.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>
Question 1
In LangChain, what is the primary difference between a SimpleSequentialChain and a standard SequentialChain?
SimpleSequentialChain supports multiple input variables, while SequentialChain does not.
SimpleSequentialChain only supports a single input and single output flowing between steps.
Only SequentialChain can be used with ChatOpenAI models.
Challenge: Library Support Router
Design a routing mechanism for a specialized bot.
You are building a support bot for a library.

Define the logic for a RouterChain that distinguishes between "Book Recommendations" and "Operating Hours."
Step 1
Create two prompt templates: one for book suggestions and one for library schedule info.
Solution:
book_template = """You are a librarian. Recommend books based on: {input}"""
schedule_template = """You are a receptionist. Answer hours queries: {input}"""

prompt_infos = [
    {"name": "books", "description": "Good for recommending books", "prompt_template": book_template},
    {"name": "schedule", "description": "Good for answering operating hours", "prompt_template": schedule_template}
]
Step 2
Define the router_template to guide the LLM on how to classify the user's intent, and initialize the chain.
Solution:
router_template = MULTI_PROMPT_ROUTER_TEMPLATE.format(
    destinations=destinations_str
)
router_prompt = PromptTemplate(
    template=router_template,
    input_variables=["input"],
    output_parser=RouterOutputParser(),
)
router_chain = LLMRouterChain.from_llm(llm, router_prompt)

chain = MultiPromptChain(
    router_chain=router_chain,
    destination_chains=destination_chains,
    default_chain=default_chain,
    verbose=True
)